package org.sy.lab.多线程基础._1_管理._5_局部变量;


/**
 * 实现Runnable来创建线程
 * 优点是可以继承其他的类，可以作为多个Thread的target实现资源共享
 */
public class MyThread implements Runnable {
	
	//在当前的线程中保存变量的副本
	//ThreadLocal.get: 获取ThreadLocal中当前线程共享变量的值
	//ThreadLocal.set: 设置ThreadLocal中当前线程共享变量的值
	//ThreadLocal.remove: 移除ThreadLocal中当前线程共享变量的值
	//ThreadLocal.initialValue: ThreadLocal没有被当前线程赋值时或当前线程刚调用remove方法后调用get方法，返回此方法值
	ThreadLocal<Integer> num = new ThreadLocal<Integer>() {
		protected Integer initialValue() {
			return 0;
		};
	};
	
	@Override
	public void run() {
		for (int i = 0; i < 10; i++) {
			num.set(num.get() + 1);
		}
		System.out.println(num.get());
	}
}
